package com.wgy.Day28异常.异常的处理方法;

import java.io.IOException;

/**
 * Created by pc on 2020/11/26 1:43
 * Description: LearningJava
 */
/*
异常处理的五个关键字: try...catch(捕获异常),finally,throw(抛出异常),throws(声明异常)
try...Catch关键字:异常处理的第二种方式,自己处理异常
             格式: try{
                       可能会产生异常的代码
                  }catch(定义一个异常的变量,用来接收try中抛出的异常对象){
                       异常的处理逻辑,异常对象之后,怎么处理异常对象
                       一般工作中,会把异常的信息记录到一个日志中
                  }
                   ...
                  catch(异常类名 变量名){

                 }
         注意事项:1.try中可能会抛出多个异常对象,那么就可以使用多个catch来处理这些异常对象
                2.如果try中产生了异常,那么就会执行catch中的异常处理逻辑,执行完毕后catch中的处理逻辑,继续执行try...catch之后的代码
                  如果try中没有产生异常,那么就不会执行catch中的异常处理逻辑,执行完try中的代码,继续执行try...catch之后的代码
                3.try...catch声明处理的异常,无论是否有异常出现,后续的代码都不会受到影响,程序可以继续执行下去
                4.try...catch异常处理方式,如果多个异常一次捕获多次处理的话,就要求多个catch中异常不能相同,并且若catch的多个异常之间有父子类异常的关系,那么子类异常要求在
                 上面的catch处理,父类异常在下面的catch处理

  Throwable中定义了3个异常处理的方法:
             String getMessage():返回此throwable的简短描述
             String toString():  返回此throwable的详细消息字符串.
             void printStackTrace():JVM打印异常对象,默认方法,打印的异常信息最全面的

*/
public class Demo06TryCatch {
    public static void main(String[] args) {
        try{
            //可能会产生异常的代码
            readFile("d:\\a.tx");
        } catch(IOException e){ //try中抛出什么异常,catch就定义什么异常变量,用来接收这个异常对象

            //异常的处理逻辑,出现异常对象之后,怎么处理异常对象
           // System.out.println("catch.传递的文件的后缀不是.txt");//catch.传递的文件的后缀不是.txt
           // System.out.println( e.getMessage());        //传递文件的后缀名不对
           // System.out.println(e.toString());           //重写Object类的toString方法了 java.io.IOException: 传递文件的后缀名不对
           // System.out.println(e);                    //java.io.IOException: 传递文件的后缀名不对
             e.printStackTrace();                /*java.io.IOException: 传递文件的后缀名不对
                                       at com.wgy.Day28.异常的处理方法.Demo06TryCatch.readFile(Demo06TryCatch.java:63)
                                       at com.wgy.Day28.异常的处理方法.Demo06TryCatch.main(Demo06TryCatch.java:42)*/
        }

        System.out.println("后续代码执行啦");
    }



    public static void readFile(String fileName) throws IOException {
        //如果文件的后缀名不是.txt结尾,那么我们就抛出IO异常对象,告知方法的调用者,文件的后缀名不对
        if ( !fileName.endsWith(".txt")){
            throw new IOException("传递文件的后缀名不对");
        }

        System.out.println("路径一致,读取文件");
    }
}
